<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.9.1"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>fdk-aac: original/libSBRdec/src/env_dec.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">fdk-aac
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.1 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
var searchBox = new SearchBox("searchBox", "search",false,'Search','.html');
/* @license-end */
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
/* @license-end */</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_ed137715e08969a186ec660e8ae6e2fb.html">original</a></li><li class="navelem"><a class="el" href="dir_222de58a05c98cc4a78309a37525cd28.html">libSBRdec</a></li><li class="navelem"><a class="el" href="dir_c997d48ad60fbe63e2ba342b9c79db98.html">src</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">env_dec.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Envelope decoding.  
<a href="#details">More...</a></p>
<div class="textblock"><code>#include &quot;sbrdecoder.h&quot;</code><br />
<code>#include &quot;<a class="el" href="env__extr_8h_source.html">env_extr.h</a>&quot;</code><br />
</div>
<p><a href="env__dec_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:ac15872b38c44f362cb162b328000d5ef"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="env__dec_8h.html#ac15872b38c44f362cb162b328000d5ef">decodeSbrData</a> (<a class="el" href="struct_s_b_r___h_e_a_d_e_r___d_a_t_a.html">HANDLE_SBR_HEADER_DATA</a> hHeaderData, <a class="el" href="struct_s_b_r___f_r_a_m_e___d_a_t_a.html">HANDLE_SBR_FRAME_DATA</a> h_data_left, <a class="el" href="struct_s_b_r___p_r_e_v___f_r_a_m_e___d_a_t_a.html">HANDLE_SBR_PREV_FRAME_DATA</a> h_prev_data_left, <a class="el" href="struct_s_b_r___f_r_a_m_e___d_a_t_a.html">HANDLE_SBR_FRAME_DATA</a> h_data_right, <a class="el" href="struct_s_b_r___p_r_e_v___f_r_a_m_e___d_a_t_a.html">HANDLE_SBR_PREV_FRAME_DATA</a> h_prev_data_right)</td></tr>
<tr class="memdesc:ac15872b38c44f362cb162b328000d5ef"><td class="mdescLeft">&#160;</td><td class="mdescRight">Convert raw envelope and noisefloor data to energy levels.  <a href="env__dec_8h.html#ac15872b38c44f362cb162b328000d5ef">More...</a><br /></td></tr>
<tr class="separator:ac15872b38c44f362cb162b328000d5ef"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Envelope decoding. </p>
</div><h2 class="groupheader">Function Documentation</h2>
<a id="ac15872b38c44f362cb162b328000d5ef"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac15872b38c44f362cb162b328000d5ef">&#9670;&nbsp;</a></span>decodeSbrData()</h2>

<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void decodeSbrData </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="struct_s_b_r___h_e_a_d_e_r___d_a_t_a.html">HANDLE_SBR_HEADER_DATA</a>&#160;</td>
          <td class="paramname"><em>hHeaderData</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_s_b_r___f_r_a_m_e___d_a_t_a.html">HANDLE_SBR_FRAME_DATA</a>&#160;</td>
          <td class="paramname"><em>h_data_left</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_s_b_r___p_r_e_v___f_r_a_m_e___d_a_t_a.html">HANDLE_SBR_PREV_FRAME_DATA</a>&#160;</td>
          <td class="paramname"><em>h_prev_data_left</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_s_b_r___f_r_a_m_e___d_a_t_a.html">HANDLE_SBR_FRAME_DATA</a>&#160;</td>
          <td class="paramname"><em>h_data_right</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="struct_s_b_r___p_r_e_v___f_r_a_m_e___d_a_t_a.html">HANDLE_SBR_PREV_FRAME_DATA</a>&#160;</td>
          <td class="paramname"><em>h_prev_data_right</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Convert raw envelope and noisefloor data to energy levels. </p>
<p>This function is being called by sbrDecoder_ParseElement() and provides two important algorithms:</p>
<p>First the function decodes envelopes and noise floor levels as described in requantizeEnvelopeData() and sbr_envelope_unmapping(). The function also implements concealment algorithms in case there are errors within the sbr data. For both operations fractional arithmetic is used. Therefore you might encounter different output values on your target system compared to the reference implementation. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">hHeaderData</td><td>Static control data </td></tr>
    <tr><td class="paramname">h_data_left</td><td>pointer to left channel frame data </td></tr>
    <tr><td class="paramname">h_prev_data_left</td><td>pointer to left channel previous frame data </td></tr>
    <tr><td class="paramname">h_data_right</td><td>pointer to right channel frame data </td></tr>
    <tr><td class="paramname">h_prev_data_right</td><td>pointer to right channel previous frame data </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.1
</small></address>
</body>
</html>
